The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
One use of these more powerful computer systems is to implement application servers, which execute applications and provide services for security, data access, and persistence. Application servers are often distributed across a cluster of multiple server computer systems, which may respond to requests from client computer systems. In order to respond to requests from many clients simultaneously, a cluster of servers may include large numbers of computer systems. Large numbers of servers require a significant amount of electricity for both power and cooling, which may cost millions or even tens of millions of dollars per year.
Customers naturally want to find a way to lower this significant cost of operating the servers. One technique for lowering the operating costs recognizes that the number of client requests varies over time and that many current processors provide the ability to dynamically raise and lower their clock speeds, e.g., via an API (application programming interface). Hence, this technique lowers the clock speed of selected processors in selected servers when these processors are not needed and raises the clock speed when the processors are needed. Lowering the clock speed of a processor reduces its power consumption, which can provide a significant cost savings. Unfortunately, lowering the clock speed of processors may also impact the response time of an application that is executing on the server because increasing the clock speed of a processor takes time, during which the client may wait for a response to its request.
Hence, what is needed is a technique for selectively lowering the processing speed of processors during times of low usage while still maintaining an acceptable response time to client requests.